Random Access File Operations

Computer Programming - সি++ স্ট্যান্ডার্ড লাইব্রেরি (C++ Standard Library) File Handling (ফাইল হ্যান্ডলিং) |
111
111

Random Access File Operations C++-এ একটি ধরনের ফাইল অপারেশন যা ফাইলের যেকোনো অংশে সরাসরি পৌঁছাতে সাহায্য করে, অর্থাৎ আপনি ফাইলের শুরু থেকে শেষ পর্যন্ত কেবল ধারাবাহিকভাবে পড়ার পরিবর্তে নির্দিষ্ট স্থান থেকে ফাইলের ডেটা পড়তে বা লিখতে পারবেন। এটি ফাইল স্ট্রিমের মাধ্যমে পজিশন পরিবর্তন করে কাজ করে, যার ফলে আপনি ফাইলের যেকোনো অংশে দ্রুত পৌঁছাতে পারেন।

C++-এ random access file operations সাধারণত fstream বা **fstream এর seekg() এবং seekp() ফাংশনগুলি ব্যবহার করে করা হয়। seekg() ইনপুট ফাইলের জন্য এবং seekp() আউটপুট ফাইলের জন্য ব্যবহৃত হয়।

Random Access File Operations এর উপাদান:

  1. seekg(offset, direction): ইনপুট ফাইল স্ট্রিমের অবস্থান পরিবর্তন করে।
    • offset: কতটা দূরে যেতে হবে তা নির্দেশ করে।
    • direction: কোথা থেকে গণনা করা হবে (ফাইলের শুরু, বর্তমান অবস্থান, অথবা ফাইলের শেষ)।
    • std::ios::beg: ফাইলের শুরু থেকে।
    • std::ios::cur: বর্তমান অবস্থান থেকে।
    • std::ios::end: ফাইলের শেষ থেকে।
  2. seekp(offset, direction): আউটপুট ফাইল স্ট্রিমের অবস্থান পরিবর্তন করে।
  3. tellg(): ইনপুট ফাইল স্ট্রিমের বর্তমান অবস্থান (পজিশন) ফিরে আসে।
  4. tellp(): আউটপুট ফাইল স্ট্রিমের বর্তমান অবস্থান ফিরে আসে।

উদাহরণ: Random Access File Operations

১. ফাইলের নির্দিষ্ট অংশে পাঠ করা

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::in | std::ios::out);  // ফাইল ওপেন

    if (!file) {
        std::cerr << "File could not be opened!" << std::endl;
        return 1;
    }

    // ফাইলের 5ম বাইট থেকে শুরু করা
    file.seekg(4, std::ios::beg); // 4 বাইট ফাইলের শুরু থেকে

    std::string str;
    std::getline(file, str);  // ফাইল থেকে একটি লাইন পড়া

    std::cout << "Data from the file: " << str << std::endl;

    file.close();  // ফাইল বন্ধ করা
    return 0;
}

এখানে, seekg(4, std::ios::beg) ব্যবহার করে ফাইলের শুরু থেকে 4 বাইট অগ্রসর হয়েছে এবং তারপরে std::getline() ফাংশন ব্যবহার করে একটি লাইন পড়া হয়েছে।

২. ফাইলে নির্দিষ্ট স্থানে লেখার জন্য

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::in | std::ios::out);

    if (!file) {
        std::cerr << "File could not be opened!" << std::endl;
        return 1;
    }

    // ফাইলের 10ম বাইটে লেখার জন্য অবস্থান করা
    file.seekp(9, std::ios::beg);  // 9 বাইট ফাইলের শুরু থেকে

    // নতুন ডেটা লেখার জন্য
    file << "Hello, World!";

    file.close();
    return 0;
}

এখানে, seekp(9, std::ios::beg) ব্যবহার করে ফাইলের 10ম বাইটে পৌঁছানো হয়েছে এবং তারপর নতুন ডেটা লিখে ফেলা হয়েছে।

৩. ফাইলের শেষে লেখা (Append Mode)

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::out | std::ios::app);  // append mode

    if (!file) {
        std::cerr << "File could not be opened!" << std::endl;
        return 1;
    }

    // ফাইলের শেষে লেখা
    file << "Appending new data at the end.\n";

    file.close();
    return 0;
}

এখানে std::ios::app মোডে ফাইল ওপেন করা হয়েছে, যা ফাইলের শেষে ডেটা অ্যাপেন্ড করে।


ফাইল পজিশন চেক করা

আপনি tellg() এবং tellp() ফাংশন ব্যবহার করে ইনপুট এবং আউটপুট ফাইল স্ট্রিমের পজিশন চেক করতে পারেন।

উদাহরণ: পজিশন চেক করা

#include <iostream>
#include <fstream>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::in | std::ios::out);

    if (!file) {
        std::cerr << "File could not be opened!" << std::endl;
        return 1;
    }

    file.seekg(5, std::ios::beg);  // ফাইলের 5ম বাইটে যাওয়া
    std::cout << "Current position: " << file.tellg() << std::endl;  // পজিশন দেখানো

    file.seekp(10, std::ios::beg);  // 10ম বাইটে যাওয়া
    std::cout << "Current position: " << file.tellp() << std::endl;  // পজিশন দেখানো

    file.close();
    return 0;
}

আউটপুট:

Current position: 5
Current position: 10

এখানে, tellg() এবং tellp() ফাংশন ব্যবহার করে ইনপুট এবং আউটপুট স্ট্রিমের বর্তমান অবস্থান মুদ্রিত হয়েছে।


উপসংহার

  • seekg() এবং seekp() ফাংশনগুলি ইনপুট এবং আউটপুট ফাইলের অবস্থান পরিবর্তন করতে ব্যবহৃত হয়।
  • tellg() এবং tellp() ফাংশনগুলি বর্তমান অবস্থান দেখতে ব্যবহৃত হয়।
  • Random access file operations ব্যবহারের মাধ্যমে আপনি ফাইলের যে কোনো অংশে দ্রুতভাবে পৌঁছাতে পারেন, যা খুবই কার্যকরী যখন বড় ফাইলের ডেটা প্রক্রিয়া করতে হয়।

এই ধরনের অপারেশনগুলি ফাইল ম্যানিপুলেশনকে আরও নমনীয় ও দক্ষ করে তোলে এবং বিশেষ করে বড় ফাইল বা ডেটাবেসের কাজ করার জন্য অত্যন্ত উপকারী।

Content added By
Promotion